/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"4D61211D-FDEB-4B21-AB42-73FAEEE885F4",variableType:4}
 */
var sucursal = scopes.globals.gsucursal_default_ind;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"470C2905-B243-4B93-94CC-487984A56DD4"}
 */
var letra = scopes.globals.zconf_letra_ordenes;

/**
 * @type {Date}
 *
 * @properties={typeid:35,uuid:"AAACB86B-38D3-4B06-9BA7-CDCA395D4E88",variableType:93}
 */
var fecha_hoy = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"1BD4D11D-7D1A-4748-B4A2-2A87D794C4A1",variableType:4}
 */
var es_preview = null;

/**
 * @properties={typeid:24,uuid:"A68E1215-5F05-4FB2-958A-CB12D807482F"}
 */
function iniciar() 
{
	databaseManager.setAutoSave(false);
	controller.newRecord();
	//  variables form
	es_preview = 0;
	fecha_hoy=application.getServerTimeStamp();
	letra=scopes.globals.zconf_letra_ordenes;     // X
	//  rows tablas
	fecha=fecha_hoy;
	seccion=globals.zparam_fabric_seccion_default // quitar si hay mas de una seccion y habilitar su ingreso
	renglones_en_blanco(); 
	// elements.seccion.requestFocus();  // habilitar si hay mas de una seccion
	elements.fecha.requestFocus();
	application.setNumpadEnterAsFocusNextEnabled(true);  //  TODO ??????
	return true;	
}

/**
 * @properties={typeid:24,uuid:"F1D5B62E-093F-4429-ACFC-8C4B3EB4D0FF"}
 * @AllowToRunInFind
 */
function confirmar() 
{	
//  VALIDACION 	
	if (seccion== null || fecha == null)
	{
		var aux_mensaje=' ';
	
		if (fecha==null)
			aux_mensaje='fecha';
		if (seccion==null)
			aux_mensaje='seccion';
			
		globals.gMensaje='Debe ingresar ' + aux_mensaje + ' para poder confirmar'
		globals.DIALOGS.showInfoDialog('Carga - Partes de Fabricacion',  globals.gMensaje,  "OK") //  30/12/2013		
		return false;
	} 

//  VALIDACION  RENGLONES =ver que no falten datos y ELIMINAR RENGLONES en BLANCO  
	if(parfab_cab_to_parfab_det.getSize()==0)
	{
		globals.gMensaje = 'Debe ingresar renglones ';
		globals.DIALOGS.showInfoDialog('Carga - Partes de Fabricacion',  globals.gMensaje,  "OK") //  30/12/2013	
		return false;
	}
	
//  hay un solo renglon
	parfab_cab_to_parfab_det.setSelectedIndex(1);
	if (parfab_cab_to_parfab_det.producto_id==null)
	{
		globals.gMensaje = 'Debe informar producto del renglon ' + i;
		globals.DIALOGS.showInfoDialog('Carga - Partes de Fabricacion',  globals.gMensaje,  "OK") //  30/12/2013		
		return false;
	}
	if (parfab_cab_to_parfab_det.cantidad==null || parfab_cab_to_parfab_det.cantidad==0)
	{
		globals.gMensaje = 'Debe informar Cantidad del renglon ' + i;
		globals.DIALOGS.showInfoDialog('Carga - Partes de Fabricacion',  globals.gMensaje,  "OK") //  30/12/2013		
		return false;
	} 

	
// NUMERACION
		var fs_nro_ord = databaseManager.getFoundSet('infocom','numeracion_pr')
		fs_nro_ord.loadAllRecords()
		fs_nro_ord.find()
		fs_nro_ord.sucursal=sucursal
		fs_nro_ord.letra=letra
		fs_nro_ord.cod_comprobante=globals.zconf_numeracion_parfab; // 17
		var found=fs_nro_ord.search()
		if (found != 1)
	    {	
		   globals.gMensaje = 'Sucursal o Letra o Tipo de comprobante incorrectos'
		   globals.DIALOGS.showInfoDialog('Carga - Partes de Fabricacion',  globals.gMensaje,  "OK") //  30/12/2013		
		   return false;  
	    }
		fs_nro_ord.setSelectedIndex(1)
		fs_nro_ord.ultimo_numero= fs_nro_ord.ultimo_numero + 1
		parfab_nro=fs_nro_ord.ultimo_numero;	
// OTROS DATOS CABECERA
	//TODO - parfab_estado=globals.zconf_parfab_ingresada;
	
//  ACTUALIZACION de cantidades PRODUCTOS y EXISTENCIAS

	var $fs_hist  = databaseManager.getFoundSet('infocom','hist_stock');
	var $cant_reng = databaseManager.getFoundSetCount(parfab_cab_to_parfab_det)
	for (var j = 1 ; j <= $cant_reng; j++)
	{  
	// PARA EL PRODUCTO A FABRICAR => 1) en PRODUCTOS   RESTA a stock_en_fabricacion y suma stock_existencia 
	//								  2) en EXISTENCIAS SUMA al DEPOSITO central
		parfab_cab_to_parfab_det.setSelectedIndex(j);
		if(parfab_cab_to_parfab_det.parfab_det_to_productos)
		{
			parfab_cab_to_parfab_det.parfab_det_to_productos.stock_en_fabricacion -= parfab_cab_to_parfab_det.cantidad
			parfab_cab_to_parfab_det.parfab_det_to_productos.stock_existencia += parfab_cab_to_parfab_det.cantidad
			scopes.globals.gdeposito_ind=scopes.globals.zparam_deposito_default;  // Dep central
			parfab_cab_to_parfab_det.parfab_det_to_productos.productos_to_existencias_x_dep_ind.exi_cantidad += parfab_cab_to_parfab_det.cantidad
		}
		else
		{
			globals.gMensaje = 'Producto informado en el parte NO existe en productos ';
			globals.DIALOGS.showInfoDialog('Carga - Partes de Fabricacion',  globals.gMensaje,  "OK") //  30/12/2013		
			return false;  // ver si se descarga mas de uno como cortar el for
		}
		
	// PARA COMPONENTES => 1) en PRODUCTOS   RESTA de cantidad comprometida
	//                  => 2) en EXISTENCIAS RESTA de la SECCION
	
		//  DESPIECE del PRIMER NIVEL 
		var $cuantos_componen=databaseManager.getFoundSetCount(parfab_cab_to_parfab_det.parfab_det_to_despiece_a1_version);
		for( var i = 1 ; i <= $cuantos_componen ; i ++)
		{	
			var $despie = parfab_cab_to_parfab_det.parfab_det_to_despiece_a1_version
			$despie.setSelectedIndex(i);
			var $aux_cantidad= parfab_cab_to_parfab_det.cantidad * $despie.cantidad
							
		//  COMPONENTES en PRODUCTOS (-)  
			var $cant = databaseManager.getFoundSetCount($despie.despiece_to_productos_b2) 	//	usar la relacion  porque hay FIND y ACTUALIZACION juntas y no esta OK
			if($cant == 1)
			{
				$despie.despiece_to_productos_b2.stock_comprometida -= $aux_cantidad
			}
			else
			{					
				if($cant==0)
					globals.gMensaje= 'El producto ' +   + ' cargado en despiece no está cargado en productos';
				else
					globals.gMensaje= 'El producto ' +  $despie.producto_id_b2 + ' cargado en despiece está cargado mas de 1 una vez en productos';
				globals.DIALOGS.showInfoDialog('Carga - Partes de Fabricacion',  globals.gMensaje,  "OK") //  30/12/2013		
				return false;
			}
			
		//  COMPONENTES en EXISTENCIAS en la SECCIION (-)
			scopes.globals.gdeposito_ind=scopes.globals.zparam_fabric_seccion_default;  //  Seccion que fabricará el producto
			$cant = databaseManager.getFoundSetCount($despie.despiece_to_productos_b2.productos_to_existencias_x_dep_ind)
			
			if($cant==1)
			{
				$despie.despiece_to_productos_b2.productos_to_existencias_x_dep_ind.cantidad -= $aux_cantidad
			}
			else
			{
				if($cant==0)
					globals.gMensaje= 'El componente ' +  $despie.producto_id_b2 + ' no está cargado en existencias de la seccion';
				
				else
					globals.gMensaje= 'El componente ' +  $despie.producto_id_b2 + ' está cargado mas de 1 vez en existencias de la seccion';
				globals.DIALOGS.showInfoDialog('Carga - Partes de Fabricacion',  globals.gMensaje,  "OK") //  30/12/2013	
				return false;
			}
			
		// HISTORICO STOCK  = 1 mov. x c/componente -> salida del origen,  1 mov. x c/componente -> entrada a la seccion
		  
			// PRODUCTO FINAL fabricacion
			$fs_hist.newRecord();
			$fs_hist.cantidad=$aux_cantidad;
			$fs_hist.cliente_id=null
			$fs_hist.producto_id=$despie.producto_id_b2;
			$fs_hist.fecha=fecha;
			//$fs_hist.tipo=globals.zconf_hist_egre_interno;  //4=egreso interno
			$fs_hist.tipo=scopes.globals.zconf_hist_fabricacion   //5=fabricacion
			$fs_hist.cantidad_signo=$aux_cantidad * (-1); // grabar con signo=NO hacer calculation
			$fs_hist.deposito_id=globals.zparam_fabric_seccion_default;
			$fs_hist.moneda_id=globals.zparam_moneda_default;
			// TODO  ver si se valoriza
			// $fs_hist.importe=$despie.despiece_to_productos_b2.precio_unitario * $aux_cantidad; 
			$fs_hist.importe=$despie.despiece_to_productos_b2.costo;
			$fs_hist.importe_en_pesos=$despie.despiece_to_productos_b2.costo_en_pesos;
			$fs_hist.importe_signo=$fs_hist.importe  * (-1); //  TODO revisar esto // grabar con signo=NO hacer calculation
			$fs_hist.comprob_tipo=globals.zconf_numeracion_parfab; 
			$fs_hist.comprob_sucursal=sucursal;
			$fs_hist.comprob_nro=parfab_nro;
			$fs_hist.comprob_letra=letra;
			$fs_hist.version_id=$despie.version_id;
			
		}
	} 
	 
	
	databaseManager.startTransaction()  //  11-10-2012  ve si esta ok
	var estado_save=databaseManager.saveData();
	if (estado_save==true)
	{ 
		databaseManager.commitTransaction()  //  11-10-2012 ver si esta ok
	
		// GENERAR PDF SIEMPRE  
		var carpeta=globals.zconf_path_pdf  // TOMA de una GLOBALS el NOMBRE DE LA CARPETA P/dejar el Documento
		plugins.file.createFolder(carpeta); // CREA LA CARPETA PARA DEJAR EL Documento 	
		//ARMA NOMBRE DEL PDF DE todos los CLIENTES  
		var nombre_orden=carpeta + '/Parte Fabricacion-' + utils.numberFormat(parfab_nro,'00000000') +'.pdf';				
		forms.parfab_imp.controller.print(true,false,plugins.pdf_output.getPDFPrinter(nombre_orden));
		
		globals.gMensaje = 'Parte Fabricacion '  + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(parfab_nro,'00000000') +  '\nGenerada correctamente';
		// TODO  se quiere enviar ?  u PDF ? 																
		var resp=globals.DIALOGS.showQuestionDialog('Generador de Partes de Fabricacion',  globals.gMensaje, "Imprimir", "Enviar", "PDF" );
		
		
		if (resp == 'Imprimir')		
		{
			es_preview = 1;
		    forms.parfab_imp.controller.showPrintPreview(true);  // TODO ver formato y donde se imprime
		}
		if (resp == 'Enviar')		
		{	
			// TODO 	enviar_por_mail(); hacer rutina para enviar por mail
		}
		if (resp == 'PDF')		
		{	
		// MUESTRA el pfd directamente		
			application.showURL('file:///' + nombre_orden);  
		}
		iniciar(); 
	}
	else
	{	
		databaseManager.rollbackTransaction();  //  11-10-2012 ver si esta ok
		globals.gMensaje =' Parte de Fabricacion no fue generada - Revise los datos ingresados'
		globals.DIALOGS.showInfoDialog('Generador de Partes de Fabricacion',  globals.gMensaje,  "OK")
	}
	return true
}

/**
 * Handle hide window.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"8DC4FBF2-6BEF-40FE-BAB4-C487904F29A0"}
 */
function salir(event) 
{
	if (es_preview==0)
	{	
    	var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea salir?' ,  'Si', 'No')	
		if (resp == 'Si')
		{
			databaseManager.revertEditedRecords()   //  rollback
			return true;
		}
		else
			return false;
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"E9C0E6D6-4A8B-4D34-8C3A-7F061C6B83B3"}
 */
function cancelar() 
{ 	  
	databaseManager.revertEditedRecords(); // en version 6 reemplaza a databaseManager.rollbackEditedRecords()
	iniciar();
}

/**
 * @properties={typeid:24,uuid:"3623951D-AF78-4C11-81F0-61DB6491E1F2"}
 */
function historico_stock() 
{ 
	var $fs_hist = databaseManager.getFoundSet('infocom','hist_stock'); 
	$fs_hist.newRecord();
	for ( var i = 1 ; i <= parfab_cab_to_parfab_det.getSize(); i++ )
	{
		// COMPONENTES egreso del DEPOSITO
		parfab_cab_to_parfab_det.setSelectedIndex(i); 
		$fs_hist.newRecord();
		$fs_hist.cantidad=parfab_cab_to_parfab_det.cantidad;
		$fs_hist.cliente_id=null
		$fs_hist.producto_id=parfab_cab_to_parfab_det.producto_id;
		$fs_hist.cod_producto=parfab_cab_to_parfab_det.parfab_det_to_productos.cod_producto;
		$fs_hist.fecha=fecha;
		$fs_hist.tipo=globals.zconf_hist_egre_interno;  //4=egreso interno
		$fs_hist.cantidad_signo=parfab_cab_to_parfab_det.cantidad * (-1); // grabar con signo=NO hacer calculation
		$fs_hist.deposito_id=globals.zparam_deposito_default;
		$fs_hist.moneda_id=globals.zparam_moneda_default;
		//$fs_hist.importe=parfab_cab_to_parfab_det.total_renglon; 
		//$fs_hist.importe_en_pesos=parfab_cab_to_parfab_det.total_renglon;
		//$fs_hist.importe_signo=parfab_cab_to_parfab_det.total_renglon  * (-1); // grabar con signo=NO hacer calculation
		$fs_hist.importe = parfab_cab_to_parfab_det.parfab_det_to_productos.costo * parfab_cab_to_parfab_det.cantidad
		$fs_hist.importe_en_pesos = parfab_cab_to_parfab_det.parfab_det_to_productos.costo_en_pesos * parfab_cab_to_parfab_det.cantidad
		$fs_hist.importe_signo = $fs_hist.importe  * (-1); // grabar con signo=NO hacer calculation
		$fs_hist.comprob_tipo = globals.zconf_numeracion_parfab; 
		$fs_hist.comprob_sucursal = sucursal;
		$fs_hist.comprob_nro = parfab_nro;
		$fs_hist.comprob_letra = letra;
		$fs_hist.version_id = parfab_cab_to_parfab_det.version_id;
		
		// COMPONENTES ingreso  a la SECCION
		$fs_hist.newRecord();
		$fs_hist.cantidad = parfab_cab_to_parfab_det.cantidad;
		$fs_hist.cliente_id = null
		$fs_hist.producto_id = parfab_cab_to_parfab_det.producto_id;
		$fs_hist.cod_producto = parfab_cab_to_parfab_det.parfab_det_to_productos.cod_producto;
		$fs_hist.fecha = fecha;
		$fs_hist.tipo = globals.zconf_hist_ingre_interno;  //3 ingreso interno
		$fs_hist.cantidad_signo = parfab_cab_to_parfab_det.cantidad; 
		$fs_hist.deposito_id = globals.zparam_fabric_seccion_default; 
		$fs_hist.moneda_id = globals.zparam_moneda_default;
		$fs_hist.cantidad = parfab_cab_to_parfab_det.cantidad;
		//$fs_hist.importe=parfab_cab_to_parfab_det.total_renglon; 
		//$fs_hist.importe_en_pesos=parfab_cab_to_parfab_det.total_renglon;
		//$fs_hist.importe_signo = parfab_cab_to_parfab_det.total_renglon;
		$fs_hist.importe = parfab_cab_to_parfab_det.parfab_det_to_productos.costo * parfab_cab_to_parfab_det.cantidad
		$fs_hist.importe_en_pesos = parfab_cab_to_parfab_det.parfab_det_to_productos.costo_en_pesos * parfab_cab_to_parfab_det.cantidad
		$fs_hist.importe_signo = $fs_hist.importe
		$fs_hist.comprob_tipo = globals.zconf_numeracion_parfab; 
		$fs_hist.comprob_sucursal = sucursal;
		$fs_hist.comprob_nro = parfab_nro;
		$fs_hist.comprob_letra = letra;
		$fs_hist.version_id = parfab_cab_to_parfab_det.version_id;
	}
}

/**
 * @properties={typeid:24,uuid:"DCF1C428-B461-44A0-9630-216D508EACD8"}
 */
function renglones_en_blanco() 
{
// pone 10 renglones en blanco 
/*
	for (var i=1;i <= 10;i++)
		parfab_cab_to_parfab_det.newRecord(false);
	parfab_cab_to_parfab_det.setSelectedIndex(1);
	*/ 
	
	// pone 1 solo renglon en blanco
	parfab_cab_to_parfab_det.newRecord(false);
	parfab_cab_to_parfab_det.setSelectedIndex(1);
	
}

